home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 219 (1992-09-10)(Manewaldt, A.)(DE)(PD).zip / Taifun 219 (1992-09-10)(Manewaldt, A.)(DE)(PD).adf / BILDSCHIRMSCHONER / Bildschirmschoner2.bas < prev    next >
BASIC Source File  |  1992-09-02  |  14KB  |  653 lines

  1. REM $option y+
  2. REM $option k40
  3.  
  4. LIBRARY "exec.library"
  5. LIBRARY "graphics.library"
  6. LIBRARY "intuition.library"
  7.  
  8. DECLARE FUNCTION allocmem&() LIBRARY
  9. DECLARE FUNCTION FreeMem&() LIBRARY
  10.  
  11. DECLARE FUNCTION Findtask&() LIBRARY
  12. DIM zaehler1%(20),zaehler2%(20),ozaehler1%(20),ozaehler2%(20)
  13.  
  14. task&=findtask&(0)
  15. CALL settaskpri&(task&,-127)
  16.  
  17. zeit2&=30:akt=3
  18.  
  19. IF COMMAND$<>"" THEN 
  20. t=INSTR(1,COMMAND$," ")
  21. IF t>0 THEN
  22. zeit2&=VAL(LEFT$(COMMAND$,t-1))
  23. akt=VAL(MID$(COMMAND$,t+1,1))
  24. END IF
  25. END IF
  26.  
  27. WINDOW 1,"Bildschirmschoner 1.0          © 1992 by Siegfried Rings",(0,0)-(600,15),24+4+3
  28. scrollie$="    BILDSCHIRMSCHONER 1.0 ist FREEWARE !        © 1992 by S.RINGS  "
  29. haupt$="SR-SOFTWARE-DESIGN"
  30. zaehler%=1
  31. IF FEXISTS("data0") THEN
  32.  OPEN "data0" FOR INPUT AS #1
  33.   LINE INPUT #1,Haupt$
  34.  WHILE NOT EOF(1)
  35.   LINE INPUT #1,a$
  36.   scrollie$=scrollie$+" "+a$
  37.  WEND
  38. CLOSE 1
  39. END IF
  40.  
  41.  
  42.    sWindow&   = WINDOW(7)
  43.    sScreen&   = PEEKL(sWindow& + 46)
  44.    sViewPort& = sScreen& + 44
  45.    sRastPort& = sScreen& + 84
  46.    sColorMap& = PEEKL(sViewPort& + 4)
  47.    colorTab&  = PEEKL(sColorMap& + 4)
  48.  
  49. REM  Sb&=peekl(sRastport&+4)
  50.  
  51. FOR i=0 TO 3
  52. farbe=PEEKW(colortab&+(2*i))
  53. r3%(i)=farbe\16^2
  54. g3%(i)=(farbe MOD 16^2)\16
  55. b3%(i)=farbe-r3%(i)*256-g3%(i)*16
  56. NEXT i
  57.  
  58. MENU 1,0,1,"SR_SOFTWARE_DESIGN BILDSCHIRMSCHONER"
  59. MENU 1,1,1,"          Einstellungen                     "
  60. MENU 1,2,1,"       Über das Programm                    "
  61. MENU 1,3,1,"            Entfernen                       "
  62.  
  63. GOSUB farbi2
  64. GOSUB farbi1
  65.  
  66. DIM pic%(2000)
  67. address&=VARPTR(pic%(0))
  68. BLOAD "data1",address&
  69.  
  70. haupt1:
  71. zeit&=TIMER
  72. REM zeit2&=1
  73. speed=1:richtung1=speed:richtung2=0
  74. nop1%=2:nop2%=4
  75. anzahl=10
  76. man3%=20
  77. REM akt=1
  78.  
  79. IF zeit2&<1 THEN zeit2&=1
  80. CLS
  81. PRINT "Die Zeit steht auf ";zeit2&;" Sekunden";
  82. poregister&=&hdff00a
  83. p1register&=&hdff00c
  84.  
  85. mr&=14675990&
  86. ml&=&hbfe001
  87. dr&=12574721&
  88. t1&=12577793&
  89. p00=PEEKW(poregister&)
  90. p11=PEEKW(p1register&)
  91. br11=PEEKW(mr&)
  92. bl11=PEEKB(ml&)
  93. d11=PEEKB(dr&)
  94. t11=PEEKB(t1&)
  95.  
  96. haupt:
  97.  
  98. p0=PEEKW(poregister&)
  99. p1=PEEKW(p1register&)
  100. br1=PEEKW(mr&)
  101.  d1=PEEKB(dr&)
  102. bl1=PEEKB(ml&)
  103. t12=PEEKB(t1&)
  104.  
  105. IF p0<>p00  THEN GOSUB normal
  106.  IF d11<>d1  THEN GOSUB normal
  107. IF  br1<>br11  THEN GOSUB normal
  108. IF  p1<>p11  THEN GOSUB normal
  109. IF bl1<>bl11   THEN GOSUB normal
  110. IF t11<>t12  THEN GOSUB normal
  111.  
  112. IF TIMER-zeit2&>zeit& AND bit=0 THEN GOSUB dunkel
  113. IF bit=1 THEN 
  114.  
  115.  
  116.    sWindow1&   = WINDOW(7)
  117.    sScreen1&   = PEEKL(sWindow1& + 46)
  118.    sViewPort1& = sScreen1& + 44
  119.    sRastPort1& = sScreen1& + 84
  120.    sColorMap1& = PEEKL(sViewPort1& + 4)
  121.    colorTab1&  = PEEKL(sColorMap1& + 4)
  122.   Sb&=PEEKL(sRastport1&+4)
  123.  
  124.  IF akt=1
  125.   INCR t:IF t>7 THEN t=0
  126.   LOCATE 14,45:COLOR 1,0:PRINT MID$(scrollie$,zaehler%,1)
  127. REM  CALL setapen&(srastport&,0)
  128. REM  CALL move&(srastport1&,350,106)
  129. REM  CALL text&(srastport1&,SADD(scrollie$)+zaehler%,1)
  130.   INCR zaehler%:IF zaehler%=LEN(scrollie$) THEN zaehler%=1
  131.  
  132.   FOR nop%=1 TO nop1%
  133.    CALL waittof
  134.    CALL bltbitmaprastport(sb&,nop2%,100,srastport1&,0,100,360,15,192)
  135.  NEXT nop%
  136.  
  137.  END IF
  138.  
  139.  IF akt=2 
  140.   FOR t=1 TO anzahl
  141.    zaehler1%(t)=zaehler1%(t)+t:IF zaehler1%(t)>320 THEN zaehler1%(t)=0
  142.    zaehler2%(t)=zaehler2%(t)+t:IF zaehler2%(t)>200 THEN zaehler2%(t)=0
  143.  
  144.    LINE(zaehler1%(t),zaehler2%(t))-(zaehler2%(t)+20,200-zaehler2%(t)),1
  145.    LINE(ozaehler1%(t),ozaehler2%(t))-(ozaehler2%(t)+20,200-ozaehler2%(t)),0
  146.    ozaehler1%(t)=zaehler1%(t):ozaehler2%(t)=zaehler2%(t)
  147.   NEXT t
  148.  END IF 
  149.  IF akt=3 THEN
  150.    INCR man2%
  151.   IF man2%=man3% THEN
  152.    man2%=0
  153.    x1%=x1%-4
  154.    IF x1%<180 AND x1%>120 THEN 
  155.     LOCATE 10,10:PRINT "Wo ist denn mein BOSS ?"
  156.    ELSE
  157.     LOCATE 10,10:PRINT "                          "
  158.    END IF
  159.    IF x1%<0 THEN x1%=320:LINE(0,100)-(0+50,150),0,bf
  160.    waittof
  161.   LINE(x1%,100)-(x1%+50,150),0,bf
  162.   INCR man%
  163.   IF man%>8 THEN man%=1
  164.   IF man%=1 THEN CALL bltbitmaprastport(sb&,360+1,1,srastport1&,x1%,100,30,50,192)
  165.   IF man%=2 THEN CALL bltbitmaprastport(sb&,360+67,1,srastport1&,x1%,100,30,50,192)
  166.   IF man%=3 THEN CALL bltbitmaprastport(sb&,360+32,1,srastport1&,x1%,100,30,50,192)
  167.   IF man%=4 THEN CALL bltbitmaprastport(sb&,360+67,1,srastport1&,x1%,100,30,50,192)
  168.   IF man%=5 THEN CALL bltbitmaprastport(sb&,360+1,1,srastport1&,x1%,100,30,50,192)
  169.   IF man%=6 THEN CALL bltbitmaprastport(sb&,360+136,1,srastport1&,x1%,100,30,50,192)
  170.   IF man%=7 THEN CALL bltbitmaprastport(sb&,360+102,1,srastport1&,x1%,100,30,50,192)
  171.   IF man%=8 THEN CALL bltbitmaprastport(sb&,360+136,1,srastport1&,x1%,100,30,50,192)
  172.  
  173.  END IF
  174.  REM  PUT (1,1),pic%,PSET
  175. REM WHILE MOUSE(0)<>1:LOCATE 10,10:PRINT MOUSE(1),MOUSE(2):WEND 
  176.  END IF
  177.  
  178.  IF akt=4 THEN
  179.   CALL waittof
  180.   CALL bltbitmaprastport(sb&,richtung1,0,srastport1&,richtung2,0,640,200,192)
  181.  END IF
  182.  
  183. END IF
  184.  
  185.  
  186. m1%=MENU(0)
  187.  
  188. IF m1%<>1 THEN GOTO haupt
  189. m1%=MENU(1)
  190. ON m1%GOSUB eins,zwei,drei
  191. GOTO haupt
  192.  
  193. dunkel:
  194. IF akt=0  THEN 
  195.   PALETTE 0,0,0,0
  196.   CALL display (0)
  197. ELSE
  198.  SCREEN 2,620,200,3,1
  199.  WINDOW 3,,,128,2
  200. END IF
  201.  
  202.  IF akt=1 THEN 
  203.   PALETTE 0,0,0,0
  204.   PALETTE 1,0,0,0
  205.   GOSUB farbi3
  206.   COLOR 1,0
  207.   LOCATE 5,10:PRINT haupt$
  208.   sprite 0
  209.  END IF
  210.  IF akt=2 THEN
  211.    PALETTE 0,0,0,0
  212.    PALETTE 1,0,0,0
  213.    PALETTE 2,0,0,.6
  214.    PALETTE 3,.6,.6,0
  215.    GOSUB farbi4
  216.    zaehler1%=0:zaehler2%=10:zaehler3%=200:zaehler4%=120
  217.   sprite 0
  218.  END IF
  219.  
  220.  IF akt=4 THEN
  221.  sprite 0
  222.  FOR t=0 TO 4:PALETTE t,0,0,0:NEXT t
  223.  CLS
  224.   t=1
  225.   FOR i=1 TO 150
  226.    x=INT(RND*610)
  227.    y=INT(RND*200)
  228.    INCR t:IF t>4 THEN t=2
  229.   IF t=3 THEN LINE (x,y)-(x+1,y),3:LINE (x,y)-(x,y+1),3
  230.   IF t=2 THEN     LINE (x-1,y)-(x+1,y),3:LINE (x+1,y-1)-(x,y+1),3
  231.   IF t=4 THEN PSET (x,y),t
  232.   NEXT
  233.   PALETTE 1,0,0,0
  234.   PALETTE 2,.6,.6,.6
  235.   PALETTE 3,.4,.4,.4
  236.   PALETTE 4,.2,.2,.2
  237. END IF
  238. IF akt=3 THEN
  239. REM SCREEN 2,620,200,3,1
  240. REM WINDOW 3,,,128,2
  241. PALETTE 0,0,0,0
  242. PALETTE 1,14/15,11/15,7/15
  243. PALETTE 2,12/15,9/15,6/15
  244. PALETTE 3,13/15,10/15,0
  245. PALETTE 4,1/15,1/15,11/15
  246. PALETTE 5,15/15,12/15,0
  247. PALETTE 6,5/15,3/15,1/15
  248. PALETTE 7,12/15,12/15,12/15
  249. PUT (360,1),pic%,PSET
  250. COLOR 7,0
  251.  
  252. END IF
  253.  
  254.  
  255.  
  256. bit=1
  257. RETURN
  258.  
  259. normal:
  260.  
  261. p00=PEEKW(poregister&)
  262. p11=PEEKW(p1register&)
  263. br11=PEEKW(mr&)
  264. bl11=PEEKB(ml&)
  265. d11=PEEKB(dr&)
  266. t11=PEEKB(t1&)
  267. zeit&=TIMER
  268. IF akt=0 THEN
  269.  CALL display (1)
  270.  PALETTE 0,r3%(0)/15,g3%(0)/15,b3%(0)/15
  271. ELSE
  272.  POKEL vport&+20,old&
  273.  WINDOW CLOSE 3
  274.  SCREEN CLOSE 2
  275. END IF
  276. bit=0
  277. sprite 1
  278. RETURN
  279.  
  280. eins:
  281. WINDOW 2,"EINSTELLUNGEN VORNEHMEN",(100,60)-(470,170),1
  282.  
  283. LOCATE 2,18:PRINT "Verweildauer in sec."
  284. LINE (10,5)-(20,20),2
  285. LINE (10,5)-(30,5),2
  286. LINE (30,5)-(20,20),2
  287. PAINT (20,15),1,2
  288. LINE (90,20)-(110,20),2
  289. LINE (90,20)-(100,5),2
  290. LINE (110,20)-(100,5),2
  291. PAINT (100,15),1,2:
  292. box 33,6,40,10,1
  293. LOCATE 2,6:PRINT RIGHT$(STR$(zeit2&),LEN(STR$(zeit2&))-1)
  294.  
  295.  
  296. LOCATE 4,2:PRINT  "  Laufschrift"
  297. LOCATE 4,20:PRINT "SPEED"+STR$(nop2%)
  298. box 150,22,210,10,2
  299. LOCATE 6,2:PRINT  " Sternenhimmel"
  300. LOCATE 6,20:PRINT " <   >":LOCATE 6,30:PRINT "SPEED"+STR$(speed)
  301. IF richtung1>0 THEN
  302.  box 150,38,25,10,0
  303.  box 180,38,25,10,2
  304. ELSE
  305.  box 150,38,25,10,2
  306.  box 180,38,25,10,0
  307. END IF
  308. box 210,38,150,10,2
  309.  
  310. LOCATE 8,2:PRINT  "   HERBERT"
  311. LOCATE 8,20:PRINT " -   +":LOCATE 8,28:PRINT"Arbeitsmoral:"+STR$(man3%)
  312.  box 150,54,25,10,2
  313.  box 180,54,25,10,2
  314.  box 210,54,150,10,2
  315.  box 210,54,150,10,3
  316.  LOCATE 8,28:PRINT"Arbeitsmoral:"+STR$(man3%)
  317.  
  318. LOCATE 10,2:PRINT "   Linien  "
  319. LOCATE 10,20:PRINT " -   +":LOCATE 10,30:PRINT"Anzahl:"+STR$(anzahl)
  320.  box 150,70,25,10,2
  321.  box 180,70,25,10,2
  322.  box 210,70,150,10,2
  323.  
  324. LOCATE 12,2:PRINT " Normal Dunkel"
  325. GOSUB eins3
  326. box 150,86,210,10,2
  327. LOCATE 12,20:PRINT"    Zurück"
  328. eins1:
  329. IF MOUSE(0)<>1 THEN GOTO eins1
  330. x=MOUSE(1)
  331. y=MOUSE(2)
  332. IF y>5 AND y<20 THEN 
  333.  IF x>10 AND x<30 THEN INCR zeit2&
  334.  IF x>90 AND x<110 THEN DECR zeit2&
  335. END IF
  336. IF x>5 AND x<145 THEN
  337. IF y>22 AND y<32 THEN akt=1:GOSUB eins3
  338. IF y>38 AND y<48 THEN akt=4:GOSUB eins3
  339. IF y>54 AND y<64 THEN akt=3:GOSUB eins3
  340. IF y>70 AND y<80 THEN akt=2:GOSUB eins3
  341. IF y>86 AND y<96 THEN akt=0:GOSUB eins3
  342. END IF
  343. IF y>22 AND y<32 THEN 
  344.  IF x>150 AND x<290 THEN 
  345.    nop2%=nop2%*2
  346.    IF nop2%=16 THEN nop2%=1
  347.    IF nop2%=1 THEN nop1%=8
  348.    IF nop2%=2 THEN nop1%=4
  349.    IF nop2%=4 THEN nop1%=2
  350.    IF nop2%=8 THEN nop1%=1
  351.    box 150,22,210,10,3
  352.    LOCATE 4,20:PRINT "SPEED"+STR$(nop2%)
  353.  END IF
  354. END IF
  355. IF y>38 AND y<48 THEN
  356.   IF x>150 AND x<175 THEN 
  357.    richtung1=speed:richtung2=0
  358.    box 150,38,25,10,0
  359.    box 180,38,25,10,2
  360.   END IF
  361.   IF x>180 AND x<205 THEN 
  362.    richtung2=speed:richtung1=0
  363.    box 150,38,25,10,2
  364.    box 180,38,25,10,0
  365.   END IF
  366.   IF x>210 AND x<350 THEN
  367.    box 210,38,150,10,1
  368.    CALL warten(.1)
  369.    INCR speed
  370.    IF speed>9 THEN speed=1
  371.    LOCATE 6,30:PRINT "SPEED"+STR$(speed)
  372.    IF richtung1>0 THEN 
  373.     richtung1=speed:richtung2=0
  374.    ELSE
  375.     richtung2=speed:richtung1=0
  376.    END IF
  377.    box 210,38,150,10,2
  378.   END IF
  379. END IF
  380. IF y>70 AND y<80 THEN
  381.  IF x>150 AND x<175 THEN 
  382.     DECR anzahl
  383.     IF anzahl<1 THEN anzahl=1
  384.  END IF
  385.  IF x>180 AND x<205 THEN 
  386.     INCR anzahl
  387.     IF anzahl>20 THEN anzahl=20
  388.  END IF
  389.  box 210,70,150,10,3
  390.  LOCATE 10,30:PRINT"Anzahl:"+STR$(anzahl)
  391. END IF
  392.  
  393. IF y>54 AND y<64 THEN
  394.  IF x>150 AND x<175 THEN 
  395.     DECR man3%
  396.     IF man%<1 THEN man3%=1
  397.  END IF
  398.  IF x>180 AND x<205 THEN 
  399.     INCR man3%
  400.     IF man3%>150 THEN man3%=150
  401.  END IF
  402.  box 210,54,150,10,3
  403.  LOCATE 8,28:PRINT"Arbeitsmoral:"+STR$(man3%)
  404.  
  405.  
  406. END IF
  407.    
  408. IF x>150 AND x<290 AND y>86 AND y<96 THEN GOTO eins2
  409. IF zeit2&<1 THEN zeit2&=1
  410. IF zeit2&>4000 THEN zeit2&=4000
  411. box 33,6,40,10,1
  412. LOCATE 2,6:PRINT RIGHT$(STR$(zeit2&),LEN(STR$(zeit2&))-1)
  413.  
  414. GOTO eins1 
  415. eins2:
  416. IF zeit2&<1 THEN zeit2&=1
  417. WINDOW CLOSE 2
  418. CLS
  419. PRINT "Die Zeit steht auf ";zeit2&;" Sekunden";
  420. RETURN
  421.  
  422. eins3:
  423. IF akt=1 THEN
  424.  box 5,22,140,10,0
  425.  box 5,38,140,10,2
  426.  box 5,54,140,10,2
  427.  box 5,70,140,10,2
  428.  box 5,86,140,10,2
  429. END IF
  430. IF akt=0 THEN
  431.  box 5,22,140,10,2
  432.  box 5,38,140,10,2
  433.  box 5,54,140,10,2
  434.  box 5,70,140,10,2
  435.  box 5,86,140,10,0
  436. END IF
  437. IF akt=2 THEN
  438.  box 5,22,140,10,2
  439.  box 5,38,140,10,2
  440.  box 5,54,140,10,2
  441.  box 5,70,140,10,0
  442.  box 5,86,140,10,2
  443.  
  444. END IF
  445. IF akt=3 THEN
  446.  box 5,22,140,10,2
  447.  box 5,38,140,10,2
  448.  box 5,54,140,10,0
  449.  box 5,70,140,10,2
  450.  box 5,86,140,10,2
  451. END IF
  452. IF akt=4 THEN
  453.  box 5,22,140,10,2
  454.  box 5,38,140,10,0
  455.  box 5,54,140,10,2
  456.  box 5,70,140,10,2
  457.  box 5,86,140,10,2
  458. END IF
  459. RETURN
  460.  
  461. zwei:
  462. WINDOW 2,"Über das Programm 'BILDSCHIRMSCHONER'",(100,100)-(500,170),1
  463. PRINT "BILDSCHIRMSCHONER 1.0 ,programmiert am 12.7.1992"
  464. PRINT "von Siegfried Rings in HISOFT-BASIC (COMPILIERT)"
  465. PRINT "Dieses Programm ist FREEWARE !Jeder soll und darf"
  466. PRINT "es benutzen.Wer mehr wissen will,schreibt an:"
  467. PRINT "Siegfried Rings Software-Design"
  468. PRINT "Iserstraße 7, 5419 Kleinmaischeid BRD"
  469. PRINT
  470. PRINT "         Drücke linke Maustaste";
  471. WHILE MOUSE(0)<>1:WEND
  472. WINDOW CLOSE 2
  473. RETURN
  474.  
  475. drei:
  476. GOSUB farbiende
  477. SYSTEM
  478.  
  479.  
  480. SUB DISPLAY(s%) STATIC
  481. IF s%=1 THEN POKEW 14676118&,33024&
  482. IF s%=0 THEN POKEW 14676118&,256
  483. END SUB
  484.  
  485. SUB warten (zeit) STATIC
  486. t=TIMER
  487. WHILE TIMER<t+zeit:WEND
  488. END SUB
  489.  
  490.  
  491. farbiende:
  492. wert& = FreeMem&(Clist&,4*63)
  493. wert& = FreeMem&(Clist2&,4*63)
  494. RETURN
  495.  
  496. farbi1:
  497. Clist&=allocmem&(4*63,65539&)
  498. col%=0
  499. CALL CWait(Clist&,0,0)
  500. CALL CBump(Clist&)
  501. CALL CMove(Clist&,386,0)
  502. CALL CBump(Clist&)
  503. t=1
  504. REM Jetzt folgt der Balken
  505. FOR i%=26 TO 36 STEP 2
  506. CALL CWait(Clist&,i%,0)
  507. CALL CBump(Clist&)
  508. CALL CMove(Clist&,386,col%)
  509. CALL CBump(Clist&)
  510. col%=col%+&H300
  511. NEXT i%
  512.  
  513.  
  514. CALL CWait(Clist&,100,0)
  515. CALL CBump(Clist&)
  516. CALL CMove(Clist&,384,&H333)
  517. CALL CBump(Clist&)
  518. CALL CWait(Clist&,104,0)
  519. CALL CBump(Clist&)
  520. CALL cmove(clist&,386,&hf40)
  521. CALL CBump(Clist&)
  522. CALL CWait(Clist&,106,0)
  523. CALL CBump(Clist&)
  524. CALL cmove(clist&,386,&hd70)
  525. CALL CBump(Clist&)
  526. CALL CWait(Clist&,108,0)
  527. CALL CBump(Clist&)
  528. CALL cmove(clist&,386,&haa0)
  529. CALL CBump(Clist&)
  530.  
  531. CALL CWait(Clist&,110,0)
  532. CALL CBump(Clist&)
  533. CALL cmove(clist&,386,&h8d0)
  534. CALL CBump(Clist&)
  535.  
  536. CALL CWait(Clist&,114,0)
  537. CALL CBump(Clist&)
  538.  
  539. CALL cmove(clist&,384,&h000)
  540. CALL CBump(Clist&)
  541. CALL cmove(clist&,386,&h000)
  542. CALL CBump(Clist&)
  543. CALL CWait(Clist&,10000,255)
  544. CALL CBump(Clist&)
  545. RETURN
  546.  
  547. farbi2:
  548. Clist2&=allocmem&(4*63,65539&)
  549. col%=0
  550. CALL CWait(Clist2&,0,0)
  551. CALL CBump(Clist2&)
  552. CALL CMove(Clist2&,386,0)
  553. CALL CBump(Clist2&)
  554. t=1
  555. col%=0
  556. REM Jetzt folgt der Balken
  557. FOR i%=11 TO 41
  558. CALL CWait(Clist2&,i%,0)
  559. CALL CBump(Clist2&)
  560. CALL CMove(Clist2&,386,col%)
  561. CALL CBump(Clist2&)
  562. col%=col%+(t*&H100)
  563. IF col%=&HF00 THEN t=t*-1
  564. NEXT i%
  565. col%=0:t=1
  566. FOR i%=42 TO 72
  567. CALL CWait(Clist2&,i%,0)
  568. CALL CBump(Clist2&)
  569. CALL CMove(Clist2&,386,col%)
  570. CALL CBump(Clist2&)
  571. col%=col%+(t*&H110)
  572. IF col%=&HFF0 THEN t=t*-1
  573. NEXT i%
  574. col%=0:t=1
  575. FOR i%=73 TO 103
  576. CALL CWait(Clist2&,i%,0)
  577. CALL CBump(Clist2&)
  578. CALL CMove(Clist2&,386,col%)
  579. CALL CBump(Clist2&)
  580. col%=col%+(t*&H111)
  581. IF col%=&HFFF THEN t=t*-1
  582. NEXT i%
  583. col%=0:t=1
  584. FOR i%=104 TO 134
  585. CALL CWait(Clist2&,i%,0)
  586. CALL CBump(Clist2&)
  587. CALL CMove(Clist2&,386,col%)
  588. CALL CBump(Clist2&)
  589. col%=col%+(t*&H011)
  590. IF col%=&H0FF THEN t=t*-1
  591. NEXT i%
  592. col%=0:t=1
  593. FOR i%=136 TO 166
  594. CALL CWait(Clist2&,i%,0)
  595. CALL CBump(Clist2&)
  596. CALL CMove(Clist2&,386,col%)
  597. CALL CBump(Clist2&)
  598. col%=col%+(t*&H001)
  599. IF col%=&H00F THEN t=t*-1
  600. NEXT i%
  601. col%=0:t=1
  602. FOR i%=168 TO 198
  603. CALL CWait(Clist2&,i%,0)
  604. CALL CBump(Clist2&)
  605. CALL CMove(Clist2&,386,col%)
  606. CALL CBump(Clist2&)
  607. col%=col%+(t*&H101)
  608. IF col%=&HF0F THEN t=t*-1
  609. NEXT i%
  610.  
  611.  
  612. CALL cmove(clist2&,384,&h000)
  613. CALL CBump(Clist2&)
  614. CALL CWait(Clist2&,10000,255)
  615. CALL CBump(Clist2&)
  616. RETURN
  617.  
  618. farbi3:
  619. vport&=PEEKL(WINDOW(7)+46)+44
  620. old&=PEEKL(vport&+20)
  621. POKEL vport&+20,Clist&
  622. CALL RethinkDisplay
  623. RETURN
  624. farbi4:
  625. vport&=PEEKL(WINDOW(7)+46)+44
  626. old&=PEEKL(vport&+20)
  627. POKEL vport&+20,Clist2&
  628. CALL RethinkDisplay
  629. RETURN
  630.  
  631. SUB SPRITE(s%) STATIC
  632. IF s%=1 THEN POKEW 14676118&,32800&
  633. IF s%=0 THEN POKEW 14676118&,32
  634. END SUB
  635.  
  636.  
  637. SUB box (x1,y1,xd,yd,status) STATIC
  638. IF status>1 THEN
  639. LINE (x1,y1)-(x1+xd,y1),2
  640. LINE (x1,y1)-(x1,y1+yd),2
  641. LINE (x1+xd,y1)-(x1+xd,y1+yd),1
  642. LINE (x1,y1+yd)-(x1+xd,y1+yd),1
  643. IF status=3 THEN LINE(x1+1,y1+1)-(x1+xd-1,y1+yd-1),0,bf
  644. ELSEIF status<2 THEN
  645. LINE (x1,y1)-(x1+xd,y1),1
  646. LINE (x1,y1)-(x1,y1+yd),1
  647. LINE (x1+xd,y1)-(x1+xd,y1+yd),2
  648. LINE (x1,y1+yd)-(x1+xd,y1+yd),2
  649. IF status=1 THEN LINE(x1+1,y1+1)-(x1+xd-1,y1+yd-1),0,bf
  650. END IF
  651. END SUB
  652.  
  653.